Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Preemption (computing)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Preemption_(computing)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Preemption_computing rootpage-Preemption_computing skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Preemption (computing)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */


.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style>
<p>In <a href="Computing" title="Computing">computing</a>, <b>preemption</b> is the act performed by an external <a href="Scheduling_(computing)" title="Scheduling (computing)">scheduler</a> — without assistance or cooperation from the task — of temporarily <a href="Interrupt" title="Interrupt">interrupting</a> an <a href="Execution_(computing)" title="Execution (computing)">executing</a> <a href="Task_(computing)" title="Task (computing)">task</a>, with the intention of resuming it at a later time.<sup id="cite_ref-Tanenbaum_2015_1-0" class="reference"><a href="#cite_note-Tanenbaum_2015-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup class="reference nowrap"><span title="Page / location: 153">: 153 </span></sup> This preemptive scheduler usually runs in the most privileged <a href="Protection_ring" title="Protection ring">protection ring</a>, meaning that interruption and then resumption are considered highly secure actions. Such changes to the currently executing task of a <a href="Processor_(computing)" title="Processor (computing)">processor</a> are known as <a href="Context_switch" title="Context switch">context switching</a>.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="User_mode_and_kernel_mode">User mode and kernel mode</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">See also: <a href="Kernel_preemption" title="Kernel preemption">Kernel preemption</a></div>
<p>In any given system design, some operations performed by the system may not be preemptable. This usually applies to <a href="Kernel_(operating_system)" title="Kernel (operating system)">kernel</a> functions and service <a href="Interrupt" title="Interrupt">interrupts</a> which, if not permitted to <a href="Run_to_completion_scheduling" class="mw-redirect" title="Run to completion scheduling">run to completion</a>, would tend to produce <a href="Race_condition" title="Race condition">race conditions</a> resulting in <a href="Deadlock_(computer_science)" title="Deadlock (computer science)">deadlock</a>. Barring the scheduler from preempting tasks while they are processing kernel functions simplifies the kernel design at the expense of <a href="Responsiveness" title="Responsiveness">system responsiveness</a>. The distinction between <a href="User_space_and_kernel_space" title="User space and kernel space">user mode</a> and <a href="Protection_ring#Supervisor_mode" title="Protection ring">kernel mode</a>, which determines privilege level within the system, may also be used to distinguish whether a task is currently preemptable.
</p><p>Most modern operating systems have <b>preemptive kernels</b>, which are designed to permit tasks to be preempted even when in kernel mode. Examples of such operating systems are <a href="Solaris_(operating_system)" class="mw-redirect" title="Solaris (operating system)">Solaris</a> 2.0/SunOS 5.0,<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> <a href="Windows_NT" title="Windows NT">Windows NT</a>, <a href="Linux_kernel" title="Linux kernel">Linux kernel</a> (2.5.4 and newer),<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> <a href="IBM_AIX" title="IBM AIX">AIX</a> and some <a href="Berkeley_Software_Distribution" title="Berkeley Software Distribution">BSD</a> systems (<a href="NetBSD" title="NetBSD">NetBSD</a>, since version 5).
</p>
<div class="mw-heading mw-heading2"><h2 id="Preemptive_multitasking">Preemptive multitasking</h2></div>
<p>The term <b>preemptive multitasking</b> is used to distinguish a <a href="Computer_multitasking" title="Computer multitasking">multitasking operating system</a>, which permits preemption of tasks, from a <a href="Cooperative_multitasking" title="Cooperative multitasking">cooperative multitasking</a> system wherein processes or tasks must be explicitly programmed to <a href="Yield_(multithreading)" title="Yield (multithreading)">yield</a> when they do not need system resources.
</p><p>In simple terms: Preemptive multitasking involves the use of an <a href="Interrupt_mechanism" class="mw-redirect" title="Interrupt mechanism">interrupt mechanism</a> which suspends the currently executing process and invokes a <a href="Scheduler_(computing)" class="mw-redirect" title="Scheduler (computing)">scheduler</a> to determine which process should execute next. Therefore, all processes will get some amount of CPU time at any given time.
</p><p>In preemptive multitasking, the operating system <a href="Kernel_(operating_system)" title="Kernel (operating system)">kernel</a> can also initiate a <a href="Context_switch" title="Context switch">context switch</a> to satisfy the <a href="Scheduling_(computing)" title="Scheduling (computing)">scheduling policy</a>'s priority constraint, thus preempting the active task. In general, preemption means "prior seizure of". When the high-priority task at that instance seizes the currently running task, it is known as preemptive scheduling.
</p><p>The term "preemptive multitasking" is sometimes mistakenly used when the intended meaning is more specific, referring instead to the class of scheduling policies known as <i>time-shared scheduling</i>, or <i><a href="Time-sharing" title="Time-sharing">time-sharing</a></i>.
</p><p>Preemptive multitasking allows the computer system to more reliably guarantee each process a regular "slice" of operating time. It also allows the system to rapidly deal with important external events like incoming data, which might require the immediate attention of one or another process.
</p><p>At any specific time, processes can be grouped into two categories: those that are waiting for input or output (called "<a href="I/O_bound" title="I/O bound">I/O bound</a>"), and those that are fully utilizing the CPU ("<a href="CPU_bound" class="mw-redirect" title="CPU bound">CPU bound</a>"). In early systems, processes would often "<a href="Polling_(computer_science)" title="Polling (computer science)">poll</a>" or "<a href="Busy_waiting" title="Busy waiting">busy-wait</a>" while waiting for requested input (such as disk, keyboard or network input). During this time, the process was not performing useful work, but still maintained complete control of the CPU. With the advent of interrupts and preemptive multitasking, these I/O bound processes could be "blocked", or put on hold, pending the arrival of the necessary data, allowing other processes to utilize the CPU. As the arrival of the requested data would generate an interrupt, blocked processes could be guaranteed a timely return to execution.
</p><p>Although multitasking techniques were originally developed to allow multiple users to share a single machine, it became apparent that multitasking was useful regardless of the number of users. Many operating systems, from mainframes down to single-user personal computers and no-user <a href="Control_system" title="Control system">control systems</a> (like those in <a href="Uncrewed_spacecraft" title="Uncrewed spacecraft">robotic spacecraft</a>), have recognized the usefulness of multitasking support for a variety of reasons. Multitasking makes it possible for a single user to run multiple applications at the same time, or to run "background" processes while retaining control of the computer.
</p>
<div class="mw-heading mw-heading3"><h3 id="Time_slice">Time slice</h3></div>
<div role="note" class="hatnote navigation-not-searchable">"Time slice" redirects here. For other uses, see <a href="Timeslicing_(disambiguation)" class="mw-redirect mw-disambig" title="Timeslicing (disambiguation)">Timeslicing</a>.</div>
<p>The period of time for which a process is allowed to run in a preemptive multitasking system is generally called the <i>time slice</i> or <i>quantum</i>.<sup id="cite_ref-Tanenbaum_2015_1-1" class="reference"><a href="#cite_note-Tanenbaum_2015-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup class="reference nowrap"><span title="Page: 158">: 158 </span></sup> The scheduler is run once every time slice to choose the next process to run. The length of each time slice can be critical to balancing system performance vs process responsiveness - if the time slice is too short then the scheduler itself will consume too much processing time, but if the time slice is too long, processes will take longer to respond to input.
</p><p>An <a href="Interrupt" title="Interrupt">interrupt</a> is scheduled to allow the <a href="Operating_system" title="Operating system">operating system</a> <a href="Kernel_(operating_system)" title="Kernel (operating system)">kernel</a> to switch between processes when their time slices expire, effectively allowing the processor's time to be shared among a number of tasks, giving the illusion that it is dealing with these tasks in parallel (simultaneously). The operating system which controls such a design is called a multi-tasking system.
</p>
<div class="mw-heading mw-heading3"><h3 id="System_support">System support</h3></div>
<p>Today, nearly all operating systems support preemptive multitasking, including the current versions of <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a>, <a href="MacOS" title="MacOS">macOS</a>, <a href="Linux" title="Linux">Linux</a> (including <a href="Android_(operating_system)" title="Android (operating system)">Android</a>), <a href="IOS" title="IOS">iOS</a> and <a href="IPadOS" title="IPadOS">iPadOS</a>.
</p><p>An early microcomputer operating system providing preemptive multitasking was <a href="Microware" title="Microware">Microware</a>'s <a href="OS-9" title="OS-9">OS-9</a>, available for computers based on the <a href="Motorola_6809" title="Motorola 6809">Motorola 6809</a>, including home computers such as the <a href="TRS-80_Color_Computer_2" class="mw-redirect" title="TRS-80 Color Computer 2">TRS-80 Color Computer 2</a> when configured with disk drives,<sup id="cite_ref-rainbow198309_dynamicuno_4-0" class="reference"><a href="#cite_note-rainbow198309_dynamicuno-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> with the operating system supplied by Tandy as an upgrade.<sup id="cite_ref-tandyrsc11_5-0" class="reference"><a href="#cite_note-tandyrsc11-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> <a href="Sinclair_QDOS" title="Sinclair QDOS">Sinclair QDOS</a><sup id="cite_ref-pennell1985_6-0" class="reference"><a href="#cite_note-pennell1985-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup><sup class="reference nowrap">: <span title="Pages: 18
Quotation: &quot;The complete process of multi-tasking is controlled by interrupts&quot;" class="tooltip tooltip-dashed" style="border-bottom: 1px dashed;">18</span> </sup> and <a href="AmigaOS" title="AmigaOS">AmigaOS</a> on the <a href="Amiga" title="Amiga">Amiga</a> were also microcomputer operating systems offering preemptive multitasking as a core feature. These both ran on <a href="Motorola_68000" title="Motorola 68000">Motorola 68000</a>-family <a href="Microprocessor" title="Microprocessor">microprocessors</a> without memory management. Amiga OS used <a href="Dynamic_loading" title="Dynamic loading">dynamic loading</a> of relocatable code blocks ("<a href="Amiga_Hunk" title="Amiga Hunk">hunks</a>" in Amiga jargon) to multitask preemptively all processes in the same flat address space.
</p><p>Early operating systems for <a href="IBM_PC_compatible" title="IBM PC compatible">IBM PC compatibles</a> such as <a href="MS-DOS" title="MS-DOS">MS-DOS</a> and <a href="IBM_PC_DOS" title="IBM PC DOS">PC DOS</a>, did not support multitasking at all, however alternative operating systems such as <a href="MP/M-86" class="mw-redirect" title="MP/M-86">MP/M-86</a> (1981) and <a href="Concurrent_CP/M-86" class="mw-redirect" title="Concurrent CP/M-86">Concurrent CP/M-86</a> did support preemptive multitasking. Other <a href="Unix-like" title="Unix-like">Unix-like</a> systems including <a href="MINIX" class="mw-redirect" title="MINIX">MINIX</a> and <a href="Coherent_(operating_system)" title="Coherent (operating system)">Coherent</a> provided preemptive multitasking on 1980s-era personal computers.
</p><p>Later <a href="MS-DOS" title="MS-DOS">MS-DOS</a> compatible systems natively supporting preemptive multitasking/multithreading include <a href="Concurrent_DOS" class="mw-redirect" title="Concurrent DOS">Concurrent DOS</a>, <a href="Multiuser_DOS" title="Multiuser DOS">Multiuser DOS</a>, <a href="Novell_DOS" class="mw-redirect" title="Novell DOS">Novell DOS</a> (later called <a href="Caldera_OpenDOS" class="mw-redirect" title="Caldera OpenDOS">Caldera OpenDOS</a> and <a href="DR-DOS" title="DR-DOS">DR-DOS</a> 7.02 and higher). Since <a href="Concurrent_DOS_386" class="mw-redirect" title="Concurrent DOS 386">Concurrent DOS 386</a>, they could also run multiple DOS programs concurrently in <a href="Virtual_DOS_machine" title="Virtual DOS machine">virtual DOS machines</a>.
</p><p>The earliest version of Windows to support a limited form of preemptive multitasking was <a href="Windows/386" class="mw-redirect" title="Windows/386">Windows/386 2.0</a>, which used the <a href="I386" title="I386">Intel 80386</a>'s <a href="Virtual_8086_mode" title="Virtual 8086 mode">Virtual 8086 mode</a> to run DOS applications in <a href="Virtual_machine" title="Virtual machine">virtual 8086 machines</a>, commonly known as "DOS boxes", which could be preempted. In <a href="Windows_9x" title="Windows 9x">Windows 95, 98 and Me</a>, 32-bit applications were made preemptive by running each one in a separate address space, but 16-bit applications remained cooperative for backward compatibility.<sup id="cite_ref-how_win95_7-0" class="reference"><a href="#cite_note-how_win95-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> In Windows 3.1x (protected mode), the kernel and virtual device drivers ran preemptively, but all 16-bit applications were non-preemptive and shared the same address space.
</p><p>Preemptive multitasking has always been supported by <a href="Windows_NT" title="Windows NT">Windows NT</a> (all versions), <a href="OS/2" title="OS/2">OS/2</a> (native applications), <a href="Unix" title="Unix">Unix</a> and <a href="Unix-like" title="Unix-like">Unix-like</a> systems (such as <a href="Linux" title="Linux">Linux</a>, <a href="Berkeley_Software_Distribution" title="Berkeley Software Distribution">BSD</a> and <a href="MacOS" title="MacOS">macOS</a>), <a href="OpenVMS" title="OpenVMS">VMS</a>, <a href="OS/360" class="mw-redirect" title="OS/360">OS/360</a>, and many other operating systems designed for use in the academic and medium-to-large business markets.
</p><p>Early versions of the <a href="Classic_Mac_OS" title="Classic Mac OS">classic Mac OS</a> did not support multitasking at all, with cooperative multitasking becoming available via <a href="MultiFinder" title="MultiFinder">MultiFinder</a> in <a href="Classic_Mac_OS#System_Software_5" title="Classic Mac OS">System Software 5</a> and then standard in <a href="System_7" title="System 7">System 7</a>. Although there were plans to upgrade the cooperative multitasking found in the classic Mac OS to a preemptive model (and a preemptive API did exist in <a href="Mac_OS_9" title="Mac OS 9">Mac OS 9</a>, although in a limited sense<sup id="cite_ref-Pre-emptive_Multitasking_8-0" class="reference"><a href="#cite_note-Pre-emptive_Multitasking-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>), these were abandoned in favor of <a href="MacOS" title="MacOS">Mac OS X (now called macOS)</a> that, as a hybrid of the old Mac System style and <a href="NeXTSTEP" title="NeXTSTEP">NeXTSTEP</a>, is an operating system based on the <a href="Mach_(kernel)" title="Mach (kernel)">Mach</a> kernel and derived in part from <a href="Berkeley_Software_Distribution" title="Berkeley Software Distribution">BSD</a>, which had always provided Unix-like preemptive multitasking.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Computer_multitasking" title="Computer multitasking">Computer multitasking</a></li>
<li><a href="Cooperative_multitasking" title="Cooperative multitasking">Cooperative multitasking</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-Tanenbaum_2015-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-Tanenbaum_2015_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Tanenbaum_2015_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFTanenbaum2015" class="citation book cs1">Tanenbaum, Andrew (2015). <i>Modern operating systems</i>. Boston: Pearson. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-13-359162-0</bdi>. <a href="OCLC_(identifier)" class="mw-redirect" title="OCLC (identifier)">OCLC</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/oclc/870646449">870646449</a>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFKhannaSebreeZolnovsky" class="citation journal cs1">Khanna, S.; Sebree, M.; Zolnovsky, J. "Realtime scheduling in SunOS 5.0". <i>Proceedings of the USENIX Winter Conference, 1992</i>: <span class="nowrap">375–</span>390.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://cdn.kernel.org/pub/linux/kernel/v2.5/ChangeLog-2.5.4">"Release notes for v2.5.4"</a>. <i>The Linux Kernel Archives</i>. Linux Kernel Organization, Inc<span class="reference-accessdate">. Retrieved <span class="nowrap">2021-07-03</span></span>.</cite></span>
</li>
<li id="cite_note-rainbow198309_dynamicuno-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-rainbow198309_dynamicuno_4-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFDownard1983" class="citation magazine cs1">Downard, Dan (September 1983). <a rel="nofollow" class="external text" href="https://archive.org/details/198309Rainbow/page/236/mode/2up">"Dynamic Uno"</a>. <i>The Rainbow</i>. pp.&nbsp;<span class="nowrap">236–</span>240<span class="reference-accessdate">. Retrieved <span class="nowrap">9 May</span> 2024</span>.</cite></span>
</li>
<li id="cite_note-tandyrsc11-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-tandyrsc11_5-0">^</a></b></span> <span class="reference-text"><cite class="citation book cs1"><a rel="nofollow" class="external text" href="https://archive.org/details/RSC-11_Computer_Catalog_1984_Radio_Shack_a/page/n52/mode/1up"><i>1984 TRS-80 Catalog</i></a>. Tandy Corporation. 1984. pp.&nbsp;<span class="nowrap">53–</span>54<span class="reference-accessdate">. Retrieved <span class="nowrap">14 May</span> 2024</span>.</cite></span>
</li>
<li id="cite_note-pennell1985-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-pennell1985_6-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFPennell1985" class="citation book cs1">Pennell, Andrew (1985). <a rel="nofollow" class="external text" href="https://archive.org/details/sinclairqdoscomp0000penn/mode/2up"><i>The Sinclair QDOS Companion</i></a>. Sunshine Books. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-946408-69-6</bdi><span class="reference-accessdate">. Retrieved <span class="nowrap">12 May</span> 2024</span>.</cite></span>
</li>
<li id="cite_note-how_win95-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-how_win95_7-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080117085655/http://support.microsoft.com/kb/117567">"How 16-Bit and 32-Bit Programs Multitask in Windows 95 (Q117567)"</a>. Archived from <a rel="nofollow" class="external text" href="http://support.microsoft.com/kb/117567">the original</a> on 2008-01-17<span class="reference-accessdate">. Retrieved <span class="nowrap">2008-01-17</span></span>.</cite></span>
</li>
<li id="cite_note-Pre-emptive_Multitasking-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-Pre-emptive_Multitasking_8-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20071013225430/http://lists.apple.com/archives/Mt-smp/2001/May/msg00007.html">"Re: newbie question: What is a Blue Task"</a>. Archived from <a rel="nofollow" class="external text" href="http://lists.apple.com/archives/Mt-smp/2001/May/msg00007.html">the original</a> on 2007-10-13<span class="reference-accessdate">. Retrieved <span class="nowrap">2007-03-29</span></span>.</cite></span>
</li>
</ol></div></div>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Operating_systems310" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div id="Operating_systems310" style="font-size:114%;margin:0 4em"><a href="Operating_system" title="Operating system">Operating systems</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">General</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Comparison_of_operating_systems" title="Comparison of operating systems">Comparison</a></li>
<li><a href="Forensic_software_engineering" title="Forensic software engineering">Forensic engineering</a></li>
<li><a href="History_of_operating_systems" title="History of operating systems">History</a></li>
<li><a href="List_of_operating_systems" title="List of operating systems">List</a></li>
<li><a href="Timeline_of_operating_systems" title="Timeline of operating systems">Timeline</a></li>
<li><a href="Usage_share_of_operating_systems" title="Usage share of operating systems">Usage share</a></li>
<li><a href="Comparison_of_user_features_of_operating_systems" title="Comparison of user features of operating systems">User features comparison</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Variants</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Disk_operating_system" title="Disk operating system">Disk operating system</a></li>
<li><a href="Distributed_operating_system" title="Distributed operating system">Distributed operating system</a></li>
<li><a href="Embedded_operating_system" title="Embedded operating system">Embedded operating system</a></li>
<li><a href="Hobbyist_operating_system" title="Hobbyist operating system">Hobbyist operating system</a></li>
<li><a href="Just_enough_operating_system" title="Just enough operating system">Just enough operating system</a></li>
<li><a href="Mobile_operating_system" title="Mobile operating system">Mobile operating system</a></li>
<li><a href="Network_operating_system" title="Network operating system">Network operating system</a></li>
<li><a href="Object-oriented_operating_system" title="Object-oriented operating system">Object-oriented operating system</a></li>
<li><a href="Real-time_operating_system" title="Real-time operating system">Real-time operating system</a></li>
<li><a href="Supercomputer_operating_system" title="Supercomputer operating system">Supercomputer operating system</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Kernel_(operating_system)" title="Kernel (operating system)">Kernel</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:6em"><a href="Computer_architecture" title="Computer architecture">Architectures</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Exokernel" title="Exokernel">Exokernel</a></li>
<li><a href="Hybrid_kernel" title="Hybrid kernel">Hybrid</a></li>
<li><a href="Microkernel" title="Microkernel">Microkernel</a></li>
<li><a href="Monolithic_kernel" title="Monolithic kernel">Monolithic</a></li>
<li><a href="Multikernel" title="Multikernel">Multikernel</a></li>
<li><a href="Vkernel" title="Vkernel">vkernel</a></li>
<li><a href="Rump_kernel" title="Rump kernel">Rump kernel</a></li>
<li><a href="Unikernel" title="Unikernel">Unikernel</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:6em">Components</th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Device_driver" title="Device driver">Device driver</a></li>
<li><a href="Loadable_kernel_module" title="Loadable kernel module">Loadable kernel module</a></li>
<li><a href="User_space_and_kernel_space" title="User space and kernel space">User space and kernel space</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Process_management_(computing)" title="Process management (computing)">Process management</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:6em">Concepts</th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Computer_multitasking" title="Computer multitasking">Computer multitasking</a> (<a href="Cooperative_multitasking" title="Cooperative multitasking">Cooperative</a>, )</li>
<li><a href="Context_switch" title="Context switch">Context switch</a></li>
<li><a href="Interrupt" title="Interrupt">Interrupt</a></li>
<li><a href="Inter-process_communication" title="Inter-process communication">IPC</a></li>
<li><a href="Process_(computing)" title="Process (computing)">Process</a></li>
<li><a href="Process_control_block" title="Process control block">Process control block</a></li>
<li><a href="Real-time_operating_system" title="Real-time operating system">Real-time</a></li>
<li><a href="Thread_(computing)" title="Thread (computing)">Thread</a></li>
<li><a href="Time-sharing" title="Time-sharing">Time-sharing</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:6em"><a href="Scheduling_(computing)" title="Scheduling (computing)">Scheduling<br>algorithms</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Fixed-priority_pre-emptive_scheduling" title="Fixed-priority pre-emptive scheduling">Fixed-priority preemptive</a></li>
<li><a href="Multilevel_feedback_queue" title="Multilevel feedback queue">Multilevel feedback queue</a></li>
<li><a href="Round-robin_scheduling" title="Round-robin scheduling">Round-robin</a></li>
<li><a href="Shortest_job_next" title="Shortest job next">Shortest job next</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Memory_management_(operating_systems)" title="Memory management (operating systems)">Memory management</a>,<br><a href="System_resource" title="System resource">resource</a> protection</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Bus_error" title="Bus error">Bus error</a></li>
<li><a href="General_protection_fault" title="General protection fault">General protection fault</a></li>
<li><a href="Memory_paging" title="Memory paging">Memory paging</a></li>
<li><a href="Memory_protection" title="Memory protection">Memory protection</a></li>
<li><a href="Protection_ring" title="Protection ring">Protection ring</a></li>
<li><a href="Segmentation_fault" title="Segmentation fault">Segmentation fault</a></li>
<li><a href="Virtual_memory" title="Virtual memory">Virtual memory</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Non-volatile_memory" title="Non-volatile memory">Storage</a> access,<br><a href="File_system" title="File system">file systems</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Booting#BOOT-LOADER" title="Booting">Boot loader</a></li>
<li><a href="Defragmentation" title="Defragmentation">Defragmentation</a></li>
<li><a href="Device_file" title="Device file">Device file</a></li>
<li><a href="File_attribute" title="File attribute">File attribute</a></li>
<li><a href="Inode" title="Inode">Inode</a></li>
<li><a href="Journaling_file_system" title="Journaling file system">Journal</a></li>
<li><a href="Disk_partitioning" title="Disk partitioning">Partition</a></li>
<li><a href="Virtual_file_system" title="Virtual file system">Virtual file system</a></li>
<li><a href="Virtual_tape_library" title="Virtual tape library">Virtual tape library</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Supporting concepts</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="API" title="API">API</a></li>
<li><a href="Computer_network" title="Computer network">Computer network</a></li>
<li><a href="Hardware_abstraction" title="Hardware abstraction">HAL</a></li>
<li><a href="Live_CD" title="Live CD">Live CD</a></li>
<li><a href="Live_USB" title="Live USB">Live USB</a></li>
<li><a href="Shell_(computing)" title="Shell (computing)">Shell</a>
<ul><li><a href="Command-line_interface" title="Command-line interface">CLI</a></li>
<li><a href="User_interface" title="User interface">User interface</a></li></ul></li>
<li><a href="Preboot_Execution_Environment" title="Preboot Execution Environment">PXE</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-04-30" href="https://en.wikipedia.org/wiki/?title=Preemption_(computing)&amp;oldid=1288097090">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>